Skip to content

Conversation

@haikoschol
Copy link

This PR adds a minimal WebRTC dialer based on the smoldot codebase that implements the litep2p-perf protocol.

It is based off #2, so this PR should be reviewed and merged first.

In order to run this, the host machine needs to have Chrome installed. The headless_chrome crate can download a Chrome binary if necessary. This could be enabled, but for now I've opted not to.

Other requirements apart from a Rust toolchain are an installed wasm32-unknown-unknown target as well as the wasm-bindgen-cli crate, which needs to be installed in the exact same version as is used in the smoldot-perf package. This is checked in the smoldot-automation executable.

I tried to run the dialer in Docker, but ran into networking issues I was unable to resolve.

One limitation I've noticed is that the performance.now() function available in the browser for measuring time passed lacks the necessary precision to measure the bandwidth for small amounts of data, like 1 kiB.

So far this PR encompasses only connecting from a dialer in Chrome to a litep2p-based listener. We could also add a libp2p-based listener and/or run the dialer in Firefox. But I'd suggest we add that in a follow-up PR.

@haikoschol
Copy link
Author

I would also like to update the table in the README but with so many combinations being tested, it now takes forever to run run_bandwidth.sh. What's worse is that sometimes the execution hangs, even for combinations using TCP transport. I haven't figured out yet what the root cause is.

@haikoschol
Copy link
Author

I would also like to update the table in the README but with so many combinations being tested, it now takes forever to run run_bandwidth.sh.

I've updated the table now by running only the missing pairs manually.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants